package io.github.wanggit.antrpc.commons.bean;

import lombok.Data;
import lombok.ToString;

import java.io.Serializable;

@ToString
@Data
public class RpcCallLog implements Serializable {

    private static final long serialVersionUID = 3454659672745900232L;

    /** 当前App名称 spring.application.name */
    private String appName;

    /** 被调用远程App名称 spring.application.name */
    private String targetAppName;

    /** 发起本次调用的上一个调用栈 */
    private String previousStackTrace;

    /** 被调用的远程对象的接口全名 */
    private String targetClassName;

    /** 被调用的远程对象的接口方法全名 */
    private String targetMethodName;

    /** 当前节点的IP */
    private String ip;

    /** 被调用的远程IP */
    private String targetIp;

    /** 当前节点的端口 */
    private Integer port;

    /** 被调用的远程端口 */
    private Integer targetPort;

    /** 完成本次调用花费的时间, 毫秒 */
    private Long rt;

    /** 发起本次调用的开始时间点，毫秒时间戳 */
    private Long start;

    /** 完成本次调用的结束时间点，毫秒时间戳 */
    private Long end;

    /** 发起调用的本地线程ID */
    private Long threadId;

    /** 调用链路跟踪标识，可用于调用全链路跟踪 */
    private String serialNumber;

    /** 本次调用产生的异常信息，如果调用正常，那么此属性为null */
    private String errorMessage;

    /** 此次远程调用的上一级远程调用的请求ID，如果是调用链的起点，那么为root */
    private String caller;

    /** 发起此次调用的请求ID */
    private String requestId;

    /** 请求参数 */
    private Object[] requestArgs;

    /** 请求发生的时间点 */
    private String date;
}
